27c86d1ba70f01d6ca4432a848a87014728d044d,xwiki-platform-core/xwiki-platform-extension/xwiki-platform-extension-handlers/xwiki-platform-extension-handler-xar/src/main/java/org/xwiki/extension/xar/internal/handler/packager/xml/DocumentImporterHandler.java,DocumentImporterHandler,saveDocument,#String#,91

Before Change


            XWikiContext context = getXWikiContext();

            XWikiDocument document = getDocument();
            XWikiDocument dbDocument = getDatabaseDocument().clone();
            XWikiDocument previousDocument = getPreviousDocument();

            // Merge and save

After Change


        try {
            XWikiContext context = getXWikiContext();

            XWikiDocument currentDocument = getDatabaseDocument();
            XWikiDocument nextDocument = getDocument();

            // Merge and save
            if (currentDocument != null && !currentDocument.isNew()) {
                XWikiDocument previousDocument = getPreviousDocument();

                if (previousDocument != null) {
                    XWikiDocument mergedDocument = currentDocument.clone();

                    MergeResult documentMergeResult =
                        mergedDocument.merge(previousDocument, nextDocument,
                            this.configuration.getMergeConfiguration(), context);

                    if (documentMergeResult.isModified()) {
                        if (this.configuration.isInteractive() && !documentMergeResult.getErrors().isEmpty()) {
                            XWikiDocument documentToSave =
                                askDocumentToSave(currentDocument, previousDocument, nextDocument, mergedDocument);

                            if (documentToSave != currentDocument) {
                                saveDocument(documentToSave, comment, context);
                            }
                        } else {
                            saveDocument(mergedDocument, comment, context);
                        }
                    }

                    this.mergeResult =
                        new XarEntryMergeResult(new XarEntry(mergedDocument.getDocumentReference(),
                            mergedDocument.getLanguage()), documentMergeResult);
                } else {
                    saveDocument(nextDocument, comment, context);
                }
            } else {
                saveDocument(nextDocument, comment, context);
            }
        } catch (Exception e) {
            throw new SAXException("Failed to save document", e);